[INFO] cloning repository https://github.com/HarveyHunt/iogb
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/HarveyHunt/iogb" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarveyHunt%2Fiogb", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarveyHunt%2Fiogb'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] aa9cb9efb380e4883495e710d61673751b91776d
[INFO] checking HarveyHunt/iogb against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHarveyHunt%2Fiogb" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/HarveyHunt/iogb
[INFO] finished tweaking git repo https://github.com/HarveyHunt/iogb
[INFO] tweaked toml for git repo https://github.com/HarveyHunt/iogb written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/HarveyHunt/iogb on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/HarveyHunt/iogb already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded lazy_static v0.2.9
[INFO] [stderr]   Downloaded gdi32-sys v0.1.1
[INFO] [stderr]   Downloaded user32-sys v0.1.2
[INFO] [stderr]   Downloaded bitflags v0.5.0
[INFO] [stderr]   Downloaded num-traits v0.1.40
[INFO] [stderr]   Downloaded num v0.1.40
[INFO] [stderr]   Downloaded sdl2-sys v0.30.0
[INFO] [stderr]   Downloaded argparse v0.2.1
[INFO] [stderr]   Downloaded kernel32-sys v0.1.4
[INFO] [stderr]   Downloaded x11-dl v2.14.0
[INFO] [stderr]   Downloaded rand v0.3.16
[INFO] [stderr]   Downloaded libc v0.2.31
[INFO] [stderr]   Downloaded sdl2 v0.30.0
[INFO] [stderr]   Downloaded minifb v0.9.2
[INFO] [stderr]   Downloaded orbclient v0.3.12
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 72c925ec2535b06d8bc68a5e62874742a199a75b3ec43fa103936c9afc6990a6
[INFO] running `Command { std: "docker" "start" "-a" "72c925ec2535b06d8bc68a5e62874742a199a75b3ec43fa103936c9afc6990a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "72c925ec2535b06d8bc68a5e62874742a199a75b3ec43fa103936c9afc6990a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "72c925ec2535b06d8bc68a5e62874742a199a75b3ec43fa103936c9afc6990a6", kill_on_drop: false }`
[INFO] [stdout] 72c925ec2535b06d8bc68a5e62874742a199a75b3ec43fa103936c9afc6990a6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4d28e10fc547d6ab7faa34a7742984c60b5e54f7bf54cd32cb5b84720987c820
[INFO] running `Command { std: "docker" "start" "-a" "4d28e10fc547d6ab7faa34a7742984c60b5e54f7bf54cd32cb5b84720987c820", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]    Compiling pkg-config v0.3.9
[INFO] [stderr]    Compiling gcc v0.3.54
[INFO] [stderr]     Checking libc v0.2.31
[INFO] [stderr]     Checking lazy_static v0.2.9
[INFO] [stderr]     Checking argparse v0.2.1
[INFO] [stderr]     Checking bitflags v0.5.0
[INFO] [stderr]     Checking time v0.1.38
[INFO] [stderr]    Compiling minifb v0.9.2
[INFO] [stderr]    Compiling x11-dl v2.14.0
[INFO] [stderr]     Checking iogb v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:81:19
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x0000...0x00FF => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 88 |             0x0100...0x7FFF => self.cart.read_rom(addr),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:89:19
[INFO] [stdout]    |
[INFO] [stdout] 89 |             0x8000...0x97FF => self.gpu.read_tileset(addr & 0x17FF),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 |             0x9800...0x9BFF => self.gpu.read_tilemap1(addr & 0x03FF),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:91:19
[INFO] [stdout]    |
[INFO] [stdout] 91 |             0x9C00...0x9FFF => self.gpu.read_tilemap2(addr & 0x03FF),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             0xA000...0xBFFF => self.cart.read_ram(addr),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:94:19
[INFO] [stdout]    |
[INFO] [stdout] 94 |             0xC000...0xDFFF => self.wram[addr as usize & 0x1FFF],
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:95:19
[INFO] [stdout]    |
[INFO] [stdout] 95 |             0xE000...0xFDFF => self.wram[addr as usize & 0x1FFF],
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:96:19
[INFO] [stdout]    |
[INFO] [stdout] 96 |             0xFE00...0xFE9F => self.gpu.read_oam(addr & 0x9F),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:97:19
[INFO] [stdout]    |
[INFO] [stdout] 97 |             0xFEA0...0xFEFF => 0, // Gap
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:98:19
[INFO] [stdout]    |
[INFO] [stdout] 98 |             0xFF00...0xFF03 => 0, //MMIO
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:103:19
[INFO] [stdout]     |
[INFO] [stdout] 103 |             0xFF08...0xFF0E => 0, //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:105:19
[INFO] [stdout]     |
[INFO] [stdout] 105 |             0xFF10...0xFF3F => 0, //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:118:19
[INFO] [stdout]     |
[INFO] [stdout] 118 |             0xFF4C...0xFF4F => 0, //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |             0xFF80...0xFFFE => self.zram[addr as usize & 0x7F],
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:127:19
[INFO] [stdout]     |
[INFO] [stdout] 127 |             0x0000...0x7FFF => self.cart.write_rom(addr, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:128:19
[INFO] [stdout]     |
[INFO] [stdout] 128 |             0x8000...0x97FF => self.gpu.write_tileset(addr & 0x17FF, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:129:19
[INFO] [stdout]     |
[INFO] [stdout] 129 |             0x9800...0x9BFF => self.gpu.write_tilemap1(addr & 0x03FF, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:130:19
[INFO] [stdout]     |
[INFO] [stdout] 130 |             0x9C00...0x9FFF => self.gpu.write_tilemap2(addr & 0x03FF, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 |             0xA000...0xBFFF => self.cart.write_ram(addr, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 |             0xC000...0xDFFF => self.wram[addr as usize & 0x1FFF] = val,
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 134 |             0xE000...0xFDFF => self.wram[addr as usize & 0x1FFF] = val,
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:135:19
[INFO] [stdout]     |
[INFO] [stdout] 135 |             0xFE00...0xFE9F => self.gpu.write_oam(addr & 0x9F, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:136:19
[INFO] [stdout]     |
[INFO] [stdout] 136 |             0xFEA0...0xFEFF => {} // Gap
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:137:19
[INFO] [stdout]     |
[INFO] [stdout] 137 |             0xFF00...0xFF03 => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:142:19
[INFO] [stdout]     |
[INFO] [stdout] 142 |             0xFF08...0xFF0E => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:144:19
[INFO] [stdout]     |
[INFO] [stdout] 144 |             0xFF10...0xFF3F => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:157:19
[INFO] [stdout]     |
[INFO] [stdout] 157 |             0xFF4C...0xFF4F => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:159:19
[INFO] [stdout]     |
[INFO] [stdout] 159 |             0xFF51...0xFF7F => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:160:19
[INFO] [stdout]     |
[INFO] [stdout] 160 |             0xFF80...0xFFFE => self.zram[addr as usize & 0x7F] = val,
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/interconnect/interconnect.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         ((self.readb(addr + 1) as u16) << 8 | (self.readb(addr) as u16))
[INFO] [stdout]     |         ^                                                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 170 -         ((self.readb(addr + 1) as u16) << 8 | (self.readb(addr) as u16))
[INFO] [stdout] 170 +         (self.readb(addr + 1) as u16) << 8 | (self.readb(addr) as u16) 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/cartridge/cartridge.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |         try!(file.read_to_end(&mut data).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/cartridge/cartridge.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut file = try!(File::open(path).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/cartridge/cartridge.rs:102:22
[INFO] [stdout]     |
[INFO] [stdout] 102 |             self.ram[((addr as usize & (RAM_BANK_SZ - 1)) + (bank as usize * RAM_BANK_SZ))]
[INFO] [stdout]     |                      ^                                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 102 -             self.ram[((addr as usize & (RAM_BANK_SZ - 1)) + (bank as usize * RAM_BANK_SZ))]
[INFO] [stdout] 102 +             self.ram[(addr as usize & (RAM_BANK_SZ - 1)) + (bank as usize * RAM_BANK_SZ) ]
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:113:27
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     0x0000...0x1FFF => self.ram_enable = (val == 0xA),
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/cartridge/cartridge.rs:113:58
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     0x0000...0x1FFF => self.ram_enable = (val == 0xA),
[INFO] [stdout]     |                                                          ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 113 -                     0x0000...0x1FFF => self.ram_enable = (val == 0xA),
[INFO] [stdout] 113 +                     0x0000...0x1FFF => self.ram_enable = val == 0xA ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:114:27
[INFO] [stdout]     |
[INFO] [stdout] 114 |                     0x2000...0x3FFF => {
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:123:27
[INFO] [stdout]     |
[INFO] [stdout] 123 |                     0x4000...0x5FFF => {
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:131:27
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     0x6000...0x7FFF => self.rom_mode_select = (val & 0x01) == 1,
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bootrom/bootrom.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 try!(file.read_exact(&mut buf).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bootrom/bootrom.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |                 let mut file = try!(File::open(p).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]   --> src/cartridge/cartridge.rs:61:26
[INFO] [stdout]    |
[INFO] [stdout] 61 |             title: title.trim_right_matches('\0').to_string(),
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]    |
[INFO] [stdout] 61 -             title: title.trim_right_matches('\0').to_string(),
[INFO] [stdout] 61 +             title: title.trim_end_matches('\0').to_string(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu/cpu.rs:901:13
[INFO] [stdout]     |
[INFO] [stdout] 901 |             inv => {
[INFO] [stdout]     |             ^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/cpu/cpu.rs:901:13
[INFO] [stdout]     |
[INFO] [stdout] 645 |             0x00 => self.rlc(B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 646 |             0x01 => self.rlc(C),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 647 |             0x02 => self.rlc(D),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 648 |             0x03 => self.rlc(E),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 901 |             inv => {
[INFO] [stdout]     |             ^^^ ...and 252 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:81:19
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x0000...0x00FF => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 88 |             0x0100...0x7FFF => self.cart.read_rom(addr),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:89:19
[INFO] [stdout]    |
[INFO] [stdout] 89 |             0x8000...0x97FF => self.gpu.read_tileset(addr & 0x17FF),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 |             0x9800...0x9BFF => self.gpu.read_tilemap1(addr & 0x03FF),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:91:19
[INFO] [stdout]    |
[INFO] [stdout] 91 |             0x9C00...0x9FFF => self.gpu.read_tilemap2(addr & 0x03FF),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             0xA000...0xBFFF => self.cart.read_ram(addr),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:94:19
[INFO] [stdout]    |
[INFO] [stdout] 94 |             0xC000...0xDFFF => self.wram[addr as usize & 0x1FFF],
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:95:19
[INFO] [stdout]    |
[INFO] [stdout] 95 |             0xE000...0xFDFF => self.wram[addr as usize & 0x1FFF],
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:96:19
[INFO] [stdout]    |
[INFO] [stdout] 96 |             0xFE00...0xFE9F => self.gpu.read_oam(addr & 0x9F),
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:97:19
[INFO] [stdout]    |
[INFO] [stdout] 97 |             0xFEA0...0xFEFF => 0, // Gap
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/interconnect/interconnect.rs:98:19
[INFO] [stdout]    |
[INFO] [stdout] 98 |             0xFF00...0xFF03 => 0, //MMIO
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:103:19
[INFO] [stdout]     |
[INFO] [stdout] 103 |             0xFF08...0xFF0E => 0, //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:105:19
[INFO] [stdout]     |
[INFO] [stdout] 105 |             0xFF10...0xFF3F => 0, //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:118:19
[INFO] [stdout]     |
[INFO] [stdout] 118 |             0xFF4C...0xFF4F => 0, //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |             0xFF80...0xFFFE => self.zram[addr as usize & 0x7F],
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:127:19
[INFO] [stdout]     |
[INFO] [stdout] 127 |             0x0000...0x7FFF => self.cart.write_rom(addr, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:128:19
[INFO] [stdout]     |
[INFO] [stdout] 128 |             0x8000...0x97FF => self.gpu.write_tileset(addr & 0x17FF, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:129:19
[INFO] [stdout]     |
[INFO] [stdout] 129 |             0x9800...0x9BFF => self.gpu.write_tilemap1(addr & 0x03FF, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:130:19
[INFO] [stdout]     |
[INFO] [stdout] 130 |             0x9C00...0x9FFF => self.gpu.write_tilemap2(addr & 0x03FF, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 |             0xA000...0xBFFF => self.cart.write_ram(addr, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:133:19
[INFO] [stdout]     |
[INFO] [stdout] 133 |             0xC000...0xDFFF => self.wram[addr as usize & 0x1FFF] = val,
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 134 |             0xE000...0xFDFF => self.wram[addr as usize & 0x1FFF] = val,
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:135:19
[INFO] [stdout]     |
[INFO] [stdout] 135 |             0xFE00...0xFE9F => self.gpu.write_oam(addr & 0x9F, val),
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:136:19
[INFO] [stdout]     |
[INFO] [stdout] 136 |             0xFEA0...0xFEFF => {} // Gap
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:137:19
[INFO] [stdout]     |
[INFO] [stdout] 137 |             0xFF00...0xFF03 => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:142:19
[INFO] [stdout]     |
[INFO] [stdout] 142 |             0xFF08...0xFF0E => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:144:19
[INFO] [stdout]     |
[INFO] [stdout] 144 |             0xFF10...0xFF3F => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:157:19
[INFO] [stdout]     |
[INFO] [stdout] 157 |             0xFF4C...0xFF4F => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:159:19
[INFO] [stdout]     |
[INFO] [stdout] 159 |             0xFF51...0xFF7F => {} //MMIO
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/interconnect/interconnect.rs:160:19
[INFO] [stdout]     |
[INFO] [stdout] 160 |             0xFF80...0xFFFE => self.zram[addr as usize & 0x7F] = val,
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/interconnect/interconnect.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         ((self.readb(addr + 1) as u16) << 8 | (self.readb(addr) as u16))
[INFO] [stdout]     |         ^                                                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 170 -         ((self.readb(addr + 1) as u16) << 8 | (self.readb(addr) as u16))
[INFO] [stdout] 170 +         (self.readb(addr + 1) as u16) << 8 | (self.readb(addr) as u16) 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/cartridge/cartridge.rs:76:9
[INFO] [stdout]    |
[INFO] [stdout] 76 |         try!(file.read_to_end(&mut data).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/cartridge/cartridge.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut file = try!(File::open(path).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around index expression
[INFO] [stdout]    --> src/cartridge/cartridge.rs:102:22
[INFO] [stdout]     |
[INFO] [stdout] 102 |             self.ram[((addr as usize & (RAM_BANK_SZ - 1)) + (bank as usize * RAM_BANK_SZ))]
[INFO] [stdout]     |                      ^                                                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 102 -             self.ram[((addr as usize & (RAM_BANK_SZ - 1)) + (bank as usize * RAM_BANK_SZ))]
[INFO] [stdout] 102 +             self.ram[(addr as usize & (RAM_BANK_SZ - 1)) + (bank as usize * RAM_BANK_SZ) ]
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:113:27
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     0x0000...0x1FFF => self.ram_enable = (val == 0xA),
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/cartridge/cartridge.rs:113:58
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     0x0000...0x1FFF => self.ram_enable = (val == 0xA),
[INFO] [stdout]     |                                                          ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 113 -                     0x0000...0x1FFF => self.ram_enable = (val == 0xA),
[INFO] [stdout] 113 +                     0x0000...0x1FFF => self.ram_enable = val == 0xA ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:114:27
[INFO] [stdout]     |
[INFO] [stdout] 114 |                     0x2000...0x3FFF => {
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:123:27
[INFO] [stdout]     |
[INFO] [stdout] 123 |                     0x4000...0x5FFF => {
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/cartridge/cartridge.rs:131:27
[INFO] [stdout]     |
[INFO] [stdout] 131 |                     0x6000...0x7FFF => self.rom_mode_select = (val & 0x01) == 1,
[INFO] [stdout]     |                           ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/interconnect/interconnect.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             _ => panic!("Can't write 0x{:02x} to 0x{:04x}", val, addr),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/interconnect/interconnect.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |             0x0000...0x7FFF => self.cart.write_rom(addr, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 128 |             0x8000...0x97FF => self.gpu.write_tileset(addr & 0x17FF, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 129 |             0x9800...0x9BFF => self.gpu.write_tilemap1(addr & 0x03FF, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 130 |             0x9C00...0x9FFF => self.gpu.write_tilemap2(addr & 0x03FF, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 162 |             _ => panic!("Can't write 0x{:02x} to 0x{:04x}", val, addr),
[INFO] [stdout]     |             ^ ...and 30 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `assignment_operators`
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate
[INFO] [stdout]    = help: try referring to `bitflags` crate for guidance on how handle this unexpected cfg
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / bitflags!(
[INFO] [stdout] 22 | |     flags SpriteFlags: u8 {
[INFO] [stdout] 23 | |         const SPRITE_PRIORITY = 1 << 7,
[INFO] [stdout] 24 | |         const SPRITE_Y_FLIP = 1 << 6,
[INFO] [stdout] ...  |
[INFO] [stdout] 28 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/gpu/gpu.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / bitflags!(
[INFO] [stdout] 31 | |     flags StatReg: u8 {
[INFO] [stdout] 32 | |         const STAT_CMP = 1 << 2,
[INFO] [stdout] 33 | |         const STAT_HBLANK_INT = 1 << 3,
[INFO] [stdout] ...  |
[INFO] [stdout] 38 | | );
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bootrom/bootrom.rs:18:17
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 try!(file.read_exact(&mut buf).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stdout]   --> src/bootrom/bootrom.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |                 let mut file = try!(File::open(p).map_err(|e| format!("{}", e)));
[INFO] [stdout]    |                                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]    --> src/cartridge/cartridge.rs:138:29
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn write_ram(&self, addr: u16, val: u8) {}
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/cartridge/cartridge.rs:138:40
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn write_ram(&self, addr: u16, val: u8) {}
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/timer/timer.rs:63:31
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn set_div(&mut self, val: u8) {
[INFO] [stdout]    |                               ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/gpu/gpu.rs:452:51
[INFO] [stdout]     |
[INFO] [stdout] 452 |     fn render_background(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                                   ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/gpu/gpu.rs:498:33
[INFO] [stdout]     |
[INFO] [stdout] 498 |     fn render_window(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/gpu/gpu.rs:498:47
[INFO] [stdout]     |
[INFO] [stdout] 498 |     fn render_window(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                               ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/gpu/gpu.rs:504:34
[INFO] [stdout]     |
[INFO] [stdout] 504 |     fn render_sprites(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/gpu/gpu.rs:504:48
[INFO] [stdout]     |
[INFO] [stdout] 504 |     fn render_sprites(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                                ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let mut ticks = 0;
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticks`
[INFO] [stdout]   --> src/main.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let mut ticks = 0;
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImmediateW` is never constructed
[INFO] [stdout]   --> src/cpu/cpu.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct ImmediateW;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SP` and `AF` are never constructed
[INFO] [stdout]   --> src/cpu/cpu.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum IndirectAddr {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 76 |     SP,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 77 |     // Pairs
[INFO] [stdout] 78 |     AF,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IndirectAddr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `tick` is never used
[INFO] [stdout]  --> src/cpu/clk.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Clock {
[INFO] [stdout]   | ---------- method in this implementation
[INFO] [stdout] 7 |     pub fn tick(&mut self) {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `core::str::<impl str>::trim_right_matches`: superseded by `trim_end_matches`
[INFO] [stdout]   --> src/cartridge/cartridge.rs:61:26
[INFO] [stdout]    |
[INFO] [stdout] 61 |             title: title.trim_right_matches('\0').to_string(),
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]    |
[INFO] [stdout] 61 -             title: title.trim_right_matches('\0').to_string(),
[INFO] [stdout] 61 +             title: title.trim_end_matches('\0').to_string(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu/cpu.rs:901:13
[INFO] [stdout]     |
[INFO] [stdout] 901 |             inv => {
[INFO] [stdout]     |             ^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/cpu/cpu.rs:901:13
[INFO] [stdout]     |
[INFO] [stdout] 645 |             0x00 => self.rlc(B),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 646 |             0x01 => self.rlc(C),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 647 |             0x02 => self.rlc(D),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] 648 |             0x03 => self.rlc(E),
[INFO] [stdout]     |             ---- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 901 |             inv => {
[INFO] [stdout]     |             ^^^ ...and 252 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/interconnect/interconnect.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |             _ => panic!("Can't write 0x{:02x} to 0x{:04x}", val, addr),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/interconnect/interconnect.rs:162:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |             0x0000...0x7FFF => self.cart.write_rom(addr, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 128 |             0x8000...0x97FF => self.gpu.write_tileset(addr & 0x17FF, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 129 |             0x9800...0x9BFF => self.gpu.write_tilemap1(addr & 0x03FF, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 130 |             0x9C00...0x9FFF => self.gpu.write_tilemap2(addr & 0x03FF, val),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 162 |             _ => panic!("Can't write 0x{:02x} to 0x{:04x}", val, addr),
[INFO] [stdout]     |             ^ ...and 30 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]    --> src/cartridge/cartridge.rs:138:29
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn write_ram(&self, addr: u16, val: u8) {}
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/cartridge/cartridge.rs:138:40
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn write_ram(&self, addr: u16, val: u8) {}
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/timer/timer.rs:63:31
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn set_div(&mut self, val: u8) {
[INFO] [stdout]    |                               ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/gpu/gpu.rs:452:51
[INFO] [stdout]     |
[INFO] [stdout] 452 |     fn render_background(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                                   ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/gpu/gpu.rs:498:33
[INFO] [stdout]     |
[INFO] [stdout] 498 |     fn render_window(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/gpu/gpu.rs:498:47
[INFO] [stdout]     |
[INFO] [stdout] 498 |     fn render_window(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                               ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/gpu/gpu.rs:504:34
[INFO] [stdout]     |
[INFO] [stdout] 504 |     fn render_sprites(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]    --> src/gpu/gpu.rs:504:48
[INFO] [stdout]     |
[INFO] [stdout] 504 |     fn render_sprites(&mut self, start: usize, end: usize) {
[INFO] [stdout]     |                                                ^^^ help: if this is intentional, prefix it with an underscore: `_end`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let mut ticks = 0;
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticks`
[INFO] [stdout]   --> src/main.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let mut ticks = 0;
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ticks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImmediateW` is never constructed
[INFO] [stdout]   --> src/cpu/cpu.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct ImmediateW;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SP` and `AF` are never constructed
[INFO] [stdout]   --> src/cpu/cpu.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum IndirectAddr {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 76 |     SP,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 77 |     // Pairs
[INFO] [stdout] 78 |     AF,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IndirectAddr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `tick` is never used
[INFO] [stdout]  --> src/cpu/clk.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Clock {
[INFO] [stdout]   | ---------- method in this implementation
[INFO] [stdout] 7 |     pub fn tick(&mut self) {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.44s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.5.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "4d28e10fc547d6ab7faa34a7742984c60b5e54f7bf54cd32cb5b84720987c820", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4d28e10fc547d6ab7faa34a7742984c60b5e54f7bf54cd32cb5b84720987c820", kill_on_drop: false }`
[INFO] [stdout] 4d28e10fc547d6ab7faa34a7742984c60b5e54f7bf54cd32cb5b84720987c820
